package org.ala.tiktools_clickhouse_generator.tools;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 *
 *	@author ala
 *	@date 2025年6月9日
 */
public class TypeTools {

	
	/**
	 * 	类型映射
	 */
	public static Class<?> typeMapper(String type) {
		switch (type) {
			//	整形
			case "Int8": { return Byte.class; }
			case "Int16":
			case "UInt8": { return Short.class; } 
			case "UInt16":
			case "Int32": { return Integer.class; } 
			case "UInt32":
			case "Int64": { return Long.class; }
			case "UInt64": { return BigInteger.class; }
			//	浮点
			case "Float32": { return Float.class; }
			case "Float64": { return Double.class; }
			//	定点数
			case "Decimal":
			case "Decimal32":
			case "Decimal64":
			case "Decimal128":
			case "Decimal256": { return BigDecimal.class; }
			//	字符串
			case "String":
			case "UUID":
			case "FixedString": {return String.class;}
			//	日期
			case "Date": {return LocalDate.class;}
			case "DateTime":
			case "DateTime64": { return LocalDateTime.class; }
			//	枚举
			case "Enum":
			case "Enum8":
			case "Enum16": { return Integer.class; }
			//	Bool
			case "Bool": { return Integer.class; }
			//	数组
			//	元组
			default: { throw new RuntimeException("暂不支持的数据类型 type:" + type); }
		}
	}
}
